package com.adisi.objetos;

import java.util.List;


import com.adisi.bd.PerfilDatos;

public class PerfilManager {

	
	/**
	 * Obtiene una lista de todas las personas que son Usuarios del sistema
	 * 
	 * @return List<Usuario>
	 */
	public static List<Perfil> conseguirTodosLosPerfiles() {
		PerfilDatos pd = new PerfilDatos();
		return pd.conseguirTodosLosPerfiles();
		
	}

	/**
	 * Obtiene una lista de todos los perfiles de un Usuario
	 * 
	 * @param Usuario
	 * @param boolean
	 * 
	 * @return List<Usuario>
	 */
	public List<Perfil> conseguirTodosLosPerfiles(Usuario usuario) {
		PerfilDatos pd = new PerfilDatos();
		return pd.conseguirTodosLosPerfiles(usuario.getIdUsuario());
		
	}
	
	
	/**
	 * Obtiene los datos de 1 Tipo de Documento
	 * 
	 * @param Id
	 * 
	 * @return Perfil
	 */
	public static Perfil conseguirUnPerfil(int idPerfil) {
		PerfilDatos pd = new PerfilDatos();
		return pd.conseguirUnPerfil(idPerfil);
			}
	

	public static boolean grabarUnPerfl(Perfil perfil) {
		PerfilDatos pd = new PerfilDatos();
		return pd.grabarUnPerfl(perfil);
			}

	public boolean borrarUnPerfil(int idPerfil) {
		PerfilDatos pd = new PerfilDatos();
		return pd.borrarUnPerfil(idPerfil);
	}

	/**
	 * Borra los datos de 1 Usuario 
	 * 
	 * @param usuario
	 * 
	 * @return boolean
	 */
	public static boolean borrarUnPerfil(Perfil perfil) {
		PerfilDatos pd = new PerfilDatos();
		return pd.borrarUnPerfil(perfil.getIdPerfil());
		
	}

	public static boolean agregarUnPerfil(Perfil perfil) {
		PerfilDatos pd = new PerfilDatos();
		return pd.agregarUnPerfil(perfil);
		
	}
	
	/**
	 * Asigna los perfiles que se le pasan como parametros.
	 * 
	 * @param Perfil
	 * @param List<Integer>
	 * 
	 * @return boolean
	 */
	public static boolean asignarUsuarios(Perfil perfil, List<Integer> usuarioIds){
		PerfilDatos pd = new PerfilDatos();
		boolean ok = true;
		
		//Primero eliminamos los usuarios ya asignados
		pd.limpiarUsuarios(perfil.getIdPerfil());
		
		//Luego asignamos los nuevos usuarios 1 a 1
		for(int i = 0; i < usuarioIds.size(); i++){
			if(pd.asignarUnUsuario(perfil, usuarioIds.get(i))==false) {
				ok = false;
				break;
			}
		};
		
		return ok;
		
	}	

	
	/**
	 * Asigna los procesos que se le pasan como parametros.
	 * 
	 * @param Perfil
	 * @param List<Integer>
	 * 
	 * @return boolean
	 */
	public static boolean asignarProcesos(Perfil perfil, List<Integer> procesoIds){
		
		boolean ok = true;
		PerfilDatos pd = new PerfilDatos();
		
		//Primero eliminamos los procesos ya asignados
		pd.limpiarProcesos(perfil.getIdPerfil());
		
		//Luego asignamos los nuevos procesos 1 a 1
		for(int i = 0; i < procesoIds.size(); i++){
			if(pd.asignarUnProceso(perfil, procesoIds.get(i))==false) {
				ok = false;
				break;
			}
		};
		
		return ok;
		
	}	
	
}
